IAM roles for EC2 instancesを使ってみる
IAM roles for EC2 instancesって何?
IAM roles for EC2 instancesは、EC2インスタンス自身が何かAWSの各種サービスにアクセスする際の権限を設定できる仕組みです。通常、IAMは、グループとユーザに関連づけていましたが、IAM Roleは、EC2インスタンスに割り当てます。今までこの仕組みがなくて、EC2内部からAWSの各種サービスにアクセスする際に、AccessIdとSecretKeyをコピーして渡していました。間違ってAMIの共有などをしてしまうと漏洩に繋がってしまい気を使っていました。今回の新機能によって、秘密情報をコピーすることなく安全に使うことが出来ます。
IAM Roleを作成する
まずはじめに、IAMの管理コンソールを開いてRoleの新規作成をします。作成時にポリシーを設定しましょう。
EC2インスタンスにIAM Roleを割り当てる
設定は簡単です。いつものようにEC2インスタンス起動ウィザードで指定するだけです。
メタデータを取得してみる
それでは、IAM Role設定付きのEC2インスタンスにSSH接続してメタデータを取得してみましょう。
$ curl http://169.254.169.254/latest/meta-data/ ami-id ami-launch-index ami-manifest-path block-device-mapping/ hostname iam/ instance-action instance-id instance-type kernel-id local-hostname local-ipv4 mac metrics/ network/ placement/ profile public-hostname public-ipv4 public-keys/ reservation-id
iamという項目が追加されていますね。この下にsecurity-credentialsがあり、その下にロール名が入ります。
$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/test/ { "Code" : "Success", "LastUpdated" : "2012-06-13T13:39:32Z", "Type" : "AWS-HMAC", "AccessKeyId" : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "SecretAccessKey" : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "Token" : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "Expiration" : "2012-06-13T19:50:24Z"
ちゃんと取得できましたね!ちなみに、AWS純正のSDK最新版には、ソース内で接続キー情報を指定しない場合にIAM Roleの情報を利用するようにアップデートされています。ですから、毎回のようにソースに埋め込んだり、外部ファイルを読み込まなくてもサクッと繋がってしまうわけです。こざっぱりして良いですね。
まとめ
IAM Roles for EC2 Instanceはいかがでしたでしょうか。仮想サーバに対して外部から設定を注入する仕組み、これはもう、DI(Dependency Injection)コンテナですよ。あー、オレ今いいこと言ったwww。また明日〜!!